package com.kaifamiao.arrays;

import java.util.Arrays;

// 选择排序(Selection Sort)
public class SelectionSort {
    public static void main(String[] args) {
        int[] arr = { 10, 2, 9, 3, 1, 6, 7, 8, 4, 5 };

        for( int i = 0 ; i < arr.length - 1 ; i++ ){
            // 假设arr[i]是最小值并记录其下标
            int min = i;
            // 从 i + 1 开始寻找小于 arr[i] 的最小值的下标
            for( int j = i + 1 ; j < arr.length ; j++ ){
                if( arr[j] < arr[min] ){
                    min = j ; // 记录更小的元素的下标
                }
            }
            System.out.printf( "\t(i = %d)交换前:%s\n" , i , Arrays.toString(arr));
            // 若找到比 arr[i] 更小的值，则将 i 和 min 两处元素交换
            if( min != i ) {
                arr[i] ^= arr[min];
                arr[min] ^= arr[i];
                arr[i] ^= arr[min];
                System.out.println( "\t交换" );
            }
            System.out.printf( "\t(i = %d)交换后:%s\n", i , Arrays.toString(arr));
        }
    }
}
